《畅玩NAS》第6章 NextCloud环境搭建

NextCloud官网

NextCloud文档

相信很多朋友都用过网盘,使用最多、吐槽最多也莫过于某度盘,下载速度基本回到10年前的网速,我是不想用它了,今天就教搭建使用个人服务器搭建一个属于个人的网盘。

网盘系统有很多,比如Cloudreve、ownCloud、Nextcloud等,当笔者要推荐的Nextcloud。本文就教大家快速搭建Nextcloud网盘。

IMPTmD.md.jpg

6.1 NextCloud简介

Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地在个人/公司电脑、服务器甚至是树莓派等设备上搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。它的客户端覆盖了Windows、Mac、Android、iOS、Linux 等各种平台,也提供了网页端以及 WebDAV接口,所以你几乎可以在各种设备上方便地访问你的云盘。

IMPqkd.md.jpg

另外,Nextcloud 还支持 API 和插件扩展,用户可以通过安装各种「插件」来增强网盘的功能,比如 Markdown 编辑器、笔记、日历、任务列表、音乐播放器、文档编辑等等。

Nextcloud 服务端使用 PHP+MySQL 的经典组合,如果你有过建站经验,那么可以非常简单地在 VPS 服务器或个人电脑上架设并运行起来,因为 Nextcloud 就像搭建一个 WordPress 博客那样简单。官方推荐在 Linux (如 Ubuntu 或 CentOS) 系统下搭建服务器端,会比 Windows 相对稳定些。

Nextcloud 服务器搭建方法也有很多,比如使用宝塔面板搭建,当然最快捷的莫过于使用docker了,笔者在前面已经安装了docker,这里就直接使用了。

6.2目录准备

我的硬盘是挂在在/srv/目录下,设备名是dev-disk-by-uuid-a7cf6061-870f-4584-875b-d2fe73f1f5c2。

预先准备一下几个子文件夹,如下:

db : nextcloud依赖的持久化数据的数据库
html: nextcloud的资源配置文件夹
data: nextcloud的个人同步文件

IMPOfI.md.png

6.3数据库准备(非必须)

默认情况下,NextCloud使用的是SQLite数据库进行数据存储,它仅适用于没有客户端同步的测试和轻量级单用户设置。当多用户、多设备、大数据量的时候,SQLite就不太合适了,NextCloud支持MySQL,MariaDB,Oracle 11g和PostgreSQL等多种数据库。并且推荐使用MySQL / MariaDB。所以为了一劳永逸,还是用MySQL代替吧,MariaDB是MySQL源代码的一个分支。这里使用MariaDB作为数据库支撑。

安装mariadb
mariadb的安装还是使用docker进行, 打开你的终端,复制以下命令创建mariadb容器,即可。

docker run -d --name db_nextcloud \
-p 3307:3306 \
-e PUID=1000 \
-e PGID=100 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=nextcloud \
-e MYSQL_USER=nextcloud \
-e MYSQL_PASSWORD=123456 \
--restart=unless-stopped \
-v /srv/dev-disk-by-uuid-a7cf6061-870f-4584-875b-d2fe73f1f5c2/nextcloud/db:/var/lib/mysql \
 mariadb

命令参数释义(具体的参数释义可以查看镜像地址https://hub.docker.com/_/mariadb) :

-d: 后台运行容器,并返回容器ID
-name: 为容器指定一个名称
-p 3307:3306: 容器服务开放的端口,前者是宿主机的端口,后者是容器内服务的端口
-e PUID、-e PGID: 运行容器的用户的权限集id
-e MYSQL_ROOT_PASSWORD: 数据库root用户的密码
-e MYSQL_DATABASE=nextcloud :创建一个名称为nextcloud的数据库
-e MYSQL_USER:创建一个名称为nextcloud的用户
-e MYSQL_PASSWORD:名称为nextcloud的用户的密码
–restart=unless-stopped:当容器停止时候重启容器
-v:数据卷绑定 前者是宿主机的地址,后者是容器机器的位置

例如: -v /src/dev-disk-by-uuid-a7cf6061-870f-4584-875b-d2fe73f1f5c2/nextcloud/db:/var/lib/mysql 把容器/var/lib/mysql的内容挂在到宿主机/src/dev-disk-by-uuid-a7cf6061-870f-4584-875b-d2fe73f1f5c2/nextcloud/db的位置

IMi90g.md.png

查看docker运行容器,看NAMES那一栏下面 有个db_nextcloud已经在运行,也能看到我们配置的端口。

#docker ps

IMiikj.md.png

另一个方式使用telnet验证安装是否成功

#telnet 127.0.0.1 3307

IMiV10.md.png

6.4安装NextCloud

NextCloud的安装也还简单,依然是使用docker,复制下面的命令到终端运行即可 ,记得-v的前部分是你宿主机的地址,如果不想使用命令行安装,需要使用OMV自带的docker-gui界面操作也是可以的,将对应的-*的配置填到相应的界面框框内就可以了

docker run -d --name nextcloud \
       -p 8888:80 \
       --restart=unless-stopped \
       -v /srv/dev-disk-by-uuid-a7cf6061-870f-4584-875b-d2fe73f1f5c2/nextcloud/html:/var/www/html \
       -v /srv/dev-disk-by-uuid-a7cf6061-870f-4584-875b-d2fe73f1f5c2/nextcloud/data:/var/www/html/data \
       nextcloud

命令参数释义:

-p 8888:80: 容器服务开放的端口,前者是宿主机的端口,后者是容器内服务的端口
–restart=unless-stopped:当容器停止时候重启容器
-v:数据卷绑定 前者是宿主机的地址,后者是容器机器的位置

Nextcloud安装以及数据库之外的所有数据(文件上载等)都存储在容器地址/var/www/html中,要想持久化你的数据,不通过nextCloud也可以查看的话,应当映射到宿主机的某个位置上

Nextcloud的卷配置还是挺多的,例如配置(config)、数据(data)、主题(themes)等
nextcloud的一些卷地址:
/var/www/html 更新所需的主文件夹
/var/www/html/custom_apps你自己手动安装的应用位置
/var/www/html/config 本地配置文件位置
/var/www/html/data 你的网盘数据存放的位置
/var/www/html/themes/ 主题文件位置

以上卷映射我这里只把data单独抽出来了,其他的配置全部默认放在/var/www/html映射的位置里

IMiK74.md.png

查看容器运行:

# docker ps

IMiG1x.md.png

6.5访问NextCloud

在Docker中完成搭建工作,并在路由器完成端口转发工作后,我们通过DDNS上设置的远程地址和相应端口,访问nextcloud的web界面。打开浏览器,浏览器输入http://你的IP:8088即可访问nextcloud了。

刚开始的界面如下:

IMi0Nd.png

第一项配置是配置日后访问nextcloud的一个管理员用户名和密码

第二项是数据目录,这个我们在运行容器的时候已经指定了位置,所以这里不用动

第三项就是配置外置数据库的连接信息了,将之前我们创建mariadb的信息填写进去,其实这里也可以在安装nextcloud的时候将之前的mariadb容器连接进去,这里就手动填写了。要注意数据库的服务端口如果宿主机和容器端口映射的不一样的话,这里要写宿主机的端口,例如现在我的mariadb容器的服务端口3306映射到了宿主机的3307端口上了,所以这里使用的端口为3307。

所有信息填写完成后,点击安装完成,这一步骤会比较的耗时间,nextcloud需要创建数据库表和一些初始化配置信息。

填写完成后,点击【安装完成】,等待片刻即可。

IMi6jf.md.png

安装完成后,使用Windows、Mac、Android、iOS、Linux客户端登录服务器和网页班看到的是一样的,这里就不在赘述了。


欢迎访问我的网站

BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书
BruceOu的知乎

Related posts

Leave a Comment